package org.jeecg.modules.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.List;
import java.util.Random;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 订单表
 * </p>
 *
 * @author zhanggm
 * @since 2023-09-15
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_order")
public class Order implements Serializable {

    private static final long serialVersionUID = 1L;


    private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
    private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HHmmss");
    public static final List<Integer> codeList = Arrays.asList(500085, 500086, 510020, 561452, 600000, 600012, 623001);
    public static final List<Long> uidList = Arrays.asList(1L, 2L, 3L, 4L, 5L);


    public static Order generateRandomOrder() {
        return generateRandomOrder(1L, 500086, 1000L);
    }

    public static Order generateRandomOrder(Long uid,Integer code,Long count) {
        Random random = new Random();
        Order order = new Order();

        // 生成随机ID（可以根据实际情况进行修改）
//        int orderId = random.nextInt(100000);
//        order.setId(orderId);

        // 生成随机用户ID（可以根据实际情况进行修改）
        //int index = random.nextInt(uidList.size());
        order.setUid(uid);

        // 生成随机股票代码（可以根据实际情况进行修改）
        //int stockCode = random.nextInt(codeList.size());
        order.setCode(code);

        // 生成随机买卖方向（1表示买入，2表示卖出）
        int direction = random.nextInt(2) + 1;
        order.setDirection(direction);
        if (count==null || count == 0) {
            order.setDirection(1);
        }

        // 生成随机订单类型（可以根据实际情况进行修改）
        int orderType = random.nextInt(3);
        order.setType(orderType);

        // 生成随机订单价格（可以根据实际情况进行修改）
        long price = random.nextInt(2);
        price = 30 + price;
        order.setPrice(price);

        // 生成随机订单数量（可以根据实际情况进行修改）
        long ocount = 0;
        if (order.getDirection().equals(2)) {
            Long mod = count.longValue() / 100;
            ocount = random.nextInt(mod.intValue()) * 100;
        } else {
            ocount = random.nextInt(10) * 100;
        }
        if (ocount == 0) {
            //ocount = random.nextInt(10) * 100;
            throw new RuntimeException("数据无效");
        }
        order.setOcount(ocount);

        // 设置订单状态为0（可以根据实际情况进行修改）
        order.setStatus(0);

        // 生成当前日期和时间
        LocalDateTime now = LocalDateTime.now();
        String date = now.format(DATE_FORMATTER);
        String time = now.format(TIME_FORMATTER);
        order.setDate(date);
        order.setTime(time);

        return order;
    }


    /**
     * 订单ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 用户ID
     */
    private Long uid;

    /**
     * 股票代码
     */
    private Integer code;

    /**
     * 交易方向（买入或卖出）
     */
    private Integer direction;

    /**
     * 订单类型
     */
    private Integer type;

    /**
     * 价格
     */
    private Long price;

    /**
     * 数量
     */
    private Long ocount;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 日期
     */
    private String date;

    /**
     * 时间
     */
    private String time;


}
